#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>

int main(int argc, char *argv[]) {
	printf("read write file test...\n");
	int fd = open("/home/simon/700.temp/1.txt", O_RDWR, O_APPEND);

	if (argv[1] == NULL){
		printf("need argument, example: readwritefile hello\n");
		exit(2); // echo $? 可以查看
	}


	char buf[5];
	memset(buf, 0, sizeof(buf));
	int size = read(fd, buf, 5);
	printf("read:%s，  size:%d\n", buf, size);

	char* content = argv[1];
	int len = strlen(content);
	int retOLseek = lseek(fd, 0L, SEEK_END); // SEEK_END:移动到文件末尾;SEEK_SET表示距离文件开始处并设置; lseek是APUE介绍的函数， fseek来自于网上一些材料给出的移动办法，在stdio.h头文件中，但在我的机器上未测试成功
	printf("retOLseek:%d\n", retOLseek);  // 如果移动到文件末尾，其返回值，正好是文件长度

	write(fd, content, len);

	close(fd);
	exit(0);

	/**
	 * shell送参数送换行进来, 单引号引起来，该换行的地方直接回车换行即可
	 * ./build/make.debug.linux.x86_64/ch03/readwritefile/readwritefile  '
	 * quote> hello
	 * quote> simon'
	 */
}
